<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 构造函数
        function CreateCar (color, km, wheel, lb, time) {
            // 颜色 续航里程 几驱 音箱数量  零百加速的时间
            this.color = color;
            this.km = km;
            this.wheel = wheel;
            this.lb = lb;
            this.addSpeed = function() {
                console.log('零百加速：'+time);
            }
        }
        // 构造函数的上级---原型对象
        // CreateCar.prototype 这是一个对象 obj
        // 原型对象的所有属性和方法，都会被构造函数的实例继承（共享）
        // 将window、goForad还有downSpeed这三个固定的属性和方法从构造函数挪到了原型对象
        // 每次new 构造函数时 执行的代码少了 所以性能好了
        CreateCar.prototype.window = 6; // 车窗数量  是一个固定值 没有参
        CreateCar.prototype.goForad = function() {
            console.log(1);
            console.log('车轮滚滚');
        }
        CreateCar.prototype.downSpeed = function() {
            console.log(2);
            console.log('减速');
        }


        var BYD = new CreateCar('gray', 500, 4, 10, 3);
        var BMW = new CreateCar('white', 1000, 2, 4, 5);
        // 深拷贝 浅拷贝 引用数据类型（obj、arr） 
        // 简单数据类型辅助出来的是数值（复印机的复制，总量增加了）  复杂数据类型赋值出来的是地址（投影的复制，数据总量没有增加，增加的是地址）
    </script>
</body>
</html>